package com.atguigu.aclservice.util;

import com.atguigu.aclservice.entity.Menu;

import java.util.ArrayList;
import java.util.List;

/**
 * @author fxy
 * @date 2022/10/27 17:02
 */
public class MenuHelper {
    //构建树形结构
    public static List<Menu> buildTree(List<Menu> menuList) {
        List<Menu> trees=new ArrayList<>();
        //遍历所有菜单集合
        for (Menu menu : menuList) {
            //找到递归入口，parentid=0
            if(menu.getParentId()==0){
                trees.add(findChildren(menu,menuList));
            }
        }

        return trees;
    }

    //从根节点递归查询
    //判断id=parentid是否相同
    private static Menu findChildren(Menu sysMenu, List<Menu> treeNodes){
        //数据初始化
        sysMenu.setChildren(new ArrayList<Menu>());
        //遍历递归查找
        for (Menu it:treeNodes) {
            //获取当前菜单id
//            String id = sysMenu.getId();
//            long cid = Long.parseLong(id);
            //获取所有菜单parentid
//            Long parentId = it.getParentId();
            //比对
            if(sysMenu.getId().equals(it.getParentId())) {
                if(sysMenu.getChildren()==null) {
                    sysMenu.setChildren(new ArrayList<>());
                }
                sysMenu.getChildren().add(findChildren(it,treeNodes));
            }
        }
        return sysMenu;
    }

}
